#pragma once
 
#include <vector>
#include <map>
 
typedef enum
{
    SIM_STARTUP,
    SIM_GUI,
    SIM_SIMULATION,
    SIM_SHUTDOWN
} SimulationState;
 
class Simulation
{ 
public:
    Simulation();
    virtual ~Simulation();
 
    bool requestStateChange(SimulationState state);
    bool lockState();
    bool unlockState();
    SimulationState getCurrentState();
 
    void setFrameTime(float ms);
    inline float getFrameTime() { return m_frame_time; }
 
protected:
    SimulationState m_state;
    bool m_locked;
    float m_frame_time;
};